﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace Smartee.Modelling.Shapes
{
    public abstract class Shape
    {
        public Color Color { get; set; }

        public Shape()
            : this(DefaultColor)
        {
        }

        public Shape(Color color)
        {
            Color = color;
        }

        public static Color DefaultColor { get { return Color.Black; } }

        public abstract void Accept(IVisitor visitor);
    }

    public abstract class FilledShape : Shape
    {
        public Metric LineWidth { get; set; }
        public Color FillColor { get; set; }

        public static Color DefaultFillColor { get { return Color.Transparent; } }

        public FilledShape()
            : this(DefaultColor, Metric.Default, DefaultFillColor)
        {
        }

        public FilledShape(Color lineColor, Metric lineWidth, Color fillColor)
            : base(lineColor)
        {
            LineWidth = lineWidth;
            FillColor = fillColor;
        }
    }
}
